package com.pktechan.api.service;

import com.pktechan.api.entity.CustBase;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by kaifabu on 2018/9/11.
 */
public interface RedisService {
    /**
     * 将小程序用户登录态保存到redis中。
     *
     * @param userLoginState 根据openid生成的唯一字符串
     * @param respMap        {"openid": "OPENID","session_key": "SESSIONKEY",}或{"openid": "OPENID","session_key": "SESSIONKEY","unionid": "UNIONID"}
     */
    void setLoginState(String userLoginState, HashMap<String, String> respMap);

    /**
     * 将小程序用户登录态保存到redis中。
     *
     * @param userLoginState 根据openid生成的唯一字符串
     * @return {"openid": "OPENID","session_key": "SESSIONKEY",}或{"openid": "OPENID","session_key": "SESSIONKEY","unionid": "UNIONID"}
     */
    Map<String, String> getLoginState(String userLoginState);

    /**
     * 删除小程序登录态
     *
     * @param userLoginState
     */
    void delLoginState(String userLoginState);

    /**
     * 根据MPID获取AccessToken
     *
     * @param mpId
     * @return
     */
    String getAccessTokenByMpId(String mpId);

    /**
     * 保存AccessToken至redis中
     *
     * @param mpId
     * @param accessToken
     */
    void setAccessTokenByMpId(String mpId, String accessToken);

    /**
     * 根据MPID获取SdkTicket
     *
     * @param mpId
     * @return
     */
    String getSdkTicketByMpId(String mpId);

    /**
     * 保存SdkTicket至redis中
     *
     * @param mpId
     * @param sdkTicket
     */
    void setSdkTicketByMpId(String mpId, String sdkTicket);

    /**
     * 客户基本
     *
     * @param openId
     * @param custBaseJson
     */
    void setCustBaseByOpenId(String openId, String custBaseJson);

    /**
     * 根据openId获取客户基本信息
     *
     * @param openId
     */
    String getCustBaseByOpenId(String openId);

    /**
     * 根据openId清空redis
     * @param openId
     */
    void deleteCustBaseByOpenId(String openId);

    /**
     * 将短信验证码保存到redis中有效期5分钟
     *
     * @param mobile
     * @param code
     */
    void setMsgCode(String mobile, String code);

    /**
     * 根据手机号查询验证码
     *
     * @param mobile
     * @return
     */
    String getMsgCode(String mobile);

    /**
     * 根据手机号删除验证码
     *
     * @param mobile
     */
    void delMsgCode(String mobile);

    /**
     * 将图形验证码保存到redis中有效期5分钟
     *
     * @param userLoginState
     * @param imgCode
     */
    void setImageAuthCode(String userLoginState, String imgCode);


    /**
     * 根据客户ID查询图形验证码
     *
     * @param userLoginState
     * @return
     */
    String getImageAuthCode(String userLoginState);

    /**
     * 根据客户登录态查询客户基本信息
     *
     * @param userLoginState
     */
    CustBase getCustBaseByUserLoginState(String userLoginState);

    /**
     * 将实名认证图形验证码保存到redis中有效期5分钟
     *
     * @param userLoginState
     * @param imgCode
     */
    void setRealNameImageAuthCode(String userLoginState, String imgCode);

    /**
     * 根据客户ID查询实名认证图形验证码
     *
     * @param userLoginState
     * @return
     */
    String getRealNameImageAuthCode(String userLoginState);
}
